1
Eficiência e Expressividade em C++ Moderno
AI013Lesson 3
00:00

O C++ moderno (C++11/14/17) introduz Abstrações de Custo Zero que pontuam o abismo entre o controle de baixo nível do hardware e a legibilidade de alto nível. A eficiência é alcançada por meio da gestão determinística de memória, enquanto a expressividade é aprimorada por meio de lógica em tempo de compilação.

1. Estrutura de Memória: std::array vs. std::vector

std::array é um invólucro moderno para arrays de estilo C, alocado na pilha com um tamanho fixo conhecido em tempo de compilação. Em contraste, std::vector reside na heap e cresce dinamicamente. Enquanto std::vector usa um fator de crescimento geométrico (geralmente $1.5\times$ ou $2\times$), o C++ moderno oferece shrink_to_fit() para recuperar capacidade não utilizada, oferecendo um controle mais apertado do que linguagens gerenciadas como o Golang.

2. SFINAE e Segurança de Tipo

Por meio de std::enable_if e std::is_enum, os desenvolvedores podem implementar Falha na Substituição Não É Um Erro (SFINAE). Isso permite que o compilador escolha sobrecargas específicas de funções com base em características de tipo em tempo de compilação, como criar um operador de fluxo universal para enumerações usando seu std::underlying_type.

// Destaques da Gestão de Memória em C++11
v.push_back(std::move(obj)); // Semântica de movimentação
arr.at(0); // Verificação de limite
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>